package pe.com.bn.sach.service.impl;

import java.math.BigDecimal;
import java.util.*;

import org.apache.log4j.Logger;



import pe.com.bn.sach.common.Util;
import pe.com.bn.sach.dao.ExpIngresosDAO;
import pe.com.bn.sach.dao.InmuebleDAO;
import pe.com.bn.sach.dao.PagoServicioDAO;
import pe.com.bn.sach.domain.Bnchf23ExpIngresoTitular;
import pe.com.bn.sach.domain.Bnchf23ExpIngresoFamiliar;
import pe.com.bn.sach.domain.Bnchf23ExpIngrFamAdic;
import pe.com.bn.sach.domain.Bnchf23ExpFamCuentas;
import pe.com.bn.sach.domain.Bnchf23ExpTitCuentas;
import pe.com.bn.sach.domain.Bnchf35InmuebleId;
import pe.com.bn.sach.domain.Bnchf36Vendedor;
import pe.com.bn.sach.domain.multired;


import pe.bn.WSServiceHost.serHost.model.BodyConsultaMultired;
import pe.bn.WSServiceHost.serHost.model.HeadRequest;
import pe.bn.WSServiceHost.serHost.model.HeadRespose;
import pe.bn.WSServiceHost.serHost.model.WSConsultaMultiRed;

import pe.com.bn.sach.service.ExpIngresosService;
import pe.com.bn.sach.domain.Bnchf13Expediente;
import pe.com.bn.sach.domain.Bnchf35Inmueble;

import pe.com.bn.sach.domain.Bnchf23ExpTitCuentasId;
import pe.com.bn.sach.expediente.form.CuentaForm;

import pe.com.bn.sach.domain.Bnchf33PagoServicio;
 

public class ExpIngresosServiceImpl  implements ExpIngresosService

{
	private static Logger log = Logger.getLogger(ExpIngresosServiceImpl.class.getName());
	
	ExpIngresosDAO  expIngresosDAO;
	InmuebleDAO inmuebleDAO;
	PagoServicioDAO pagoservicioDAO;
	
	
	
	
	/**
	 * @param inmuebleDAO El inmuebleDAO a establecer.
	 */
	
	public void setInmuebleDAO(InmuebleDAO inmuebleDAO) {
		this.inmuebleDAO = inmuebleDAO;
	}
	/**
	 * @param expIngresosDAO El expIngresosDAO a establecer.
	 */
	public void setExpIngresosDAO(ExpIngresosDAO expIngresosDAO) {
		this.expIngresosDAO = expIngresosDAO;
	}
	
	public String idAgencia(String idCH) throws Exception
	
	{
		return expIngresosDAO.idAgencia(idCH);
	}
	
	
	
	public Bnchf33PagoServicio buscarPago(String idPago) throws Exception
	{
		Bnchf33PagoServicio bnchf33PagoServicio = new Bnchf33PagoServicio();
		
		bnchf33PagoServicio.setF33IdPago(new Long(idPago));
		return pagoservicioDAO.reciboPagado(bnchf33PagoServicio);
	}
	
	public String countCuentasFamliar(String idExpediente,Long idPersonaConyuge) throws Exception{
			return   expIngresosDAO.countCuentasFamliar(idExpediente,idPersonaConyuge);  
	}
	
	/******Ingressos familiar quinta ********/
	
	public String ingresosDelFamiliarQuinta(String idExpediente,Long idPersonaConyuge) throws Exception{
		return expIngresosDAO.ingresosDelFamiliarQuinta(idExpediente,idPersonaConyuge);
	}
	/******Datos Titlar********/
	
	public Bnchf13Expediente listDatosTitular(String idExpediente) throws Exception{
		
		
		Bnchf13Expediente bnchf13Expediente = new Bnchf13Expediente();
		bnchf13Expediente.setF13IdExpediente(idExpediente);
		List l = expIngresosDAO.listDatosTitular(bnchf13Expediente);
		if(l.size()!=0) bnchf13Expediente = (Bnchf13Expediente)l.get(0);
		return bnchf13Expediente;
	}
	
	
	/******Datos Producto********/
	
	public Bnchf13Expediente listDatosProducto(String idExpediente) throws Exception{
		Bnchf13Expediente bnchf13Expediente = new Bnchf13Expediente();
		bnchf13Expediente.setF13IdExpediente(idExpediente);
		List l = expIngresosDAO.listDatosProducto(bnchf13Expediente);
		if(l.size()!=0) bnchf13Expediente = (Bnchf13Expediente)l.get(0);
		return bnchf13Expediente;
	}
	
	public List listaExpIngrTitAdic(String idExpediente) throws Exception{
		
		Bnchf23ExpTitCuentasId bnchf23ExpTitCuentasId = new Bnchf23ExpTitCuentasId();
		Bnchf23ExpIngresoTitular bnchf23ExpIngresoTitular = new Bnchf23ExpIngresoTitular();
		bnchf23ExpIngresoTitular.setF23IdExpediente(idExpediente);
			bnchf23ExpTitCuentasId.setBnchf23ExpIngresoTitular(bnchf23ExpIngresoTitular);
			Bnchf23ExpTitCuentas bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
			bnchf23ExpTitCuentas.setId(bnchf23ExpTitCuentasId);
			return  expIngresosDAO.listaExpIngrTitAdic(bnchf23ExpTitCuentas);
		}
	
	public List listaExpIngrFamAdic(String idExpediente) throws Exception{
		
		Bnchf23ExpTitCuentasId bnchf23ExpTitCuentasId = new Bnchf23ExpTitCuentasId();
		Bnchf23ExpIngresoTitular bnchf23ExpIngresoTitular = new Bnchf23ExpIngresoTitular();
		bnchf23ExpIngresoTitular.setF23IdExpediente(idExpediente);
			bnchf23ExpTitCuentasId.setBnchf23ExpIngresoTitular(bnchf23ExpIngresoTitular);
			Bnchf23ExpTitCuentas bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
			bnchf23ExpTitCuentas.setId(bnchf23ExpTitCuentasId);
			return  expIngresosDAO.listaExpIngrFamAdic(bnchf23ExpTitCuentas);
		}
	
	public List listaExpTitCuentasResult(String idExpediente) throws Exception{
		
		Bnchf23ExpTitCuentasId bnchf23ExpTitCuentasId = new Bnchf23ExpTitCuentasId();
		Bnchf23ExpIngresoTitular bnchf23ExpIngresoTitular = new Bnchf23ExpIngresoTitular();
		bnchf23ExpIngresoTitular.setF23IdExpediente(idExpediente);
			bnchf23ExpTitCuentasId.setBnchf23ExpIngresoTitular(bnchf23ExpIngresoTitular);
			Bnchf23ExpTitCuentas bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
			bnchf23ExpTitCuentas.setId(bnchf23ExpTitCuentasId);
			return  expIngresosDAO.listaExpTitCuentasResult(bnchf23ExpTitCuentas);
		}
	
	public List listaExpFamCuentas(String idExpediente) throws Exception{
		
		Bnchf23ExpTitCuentasId bnchf23ExpTitCuentasId = new Bnchf23ExpTitCuentasId();
		Bnchf23ExpIngresoTitular bnchf23ExpIngresoTitular = new Bnchf23ExpIngresoTitular();
		bnchf23ExpIngresoTitular.setF23IdExpediente(idExpediente);
			bnchf23ExpTitCuentasId.setBnchf23ExpIngresoTitular(bnchf23ExpIngresoTitular);
			Bnchf23ExpTitCuentas bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
			bnchf23ExpTitCuentas.setId(bnchf23ExpTitCuentasId);
			return  expIngresosDAO.listaExpFamCuentas(bnchf23ExpTitCuentas);
		}
	

	/**********************ingreso titular **************************/
	
	public Bnchf23ExpIngresoTitular getexpingresotitu(String idExpediente) throws Exception
	{
		Bnchf23ExpIngresoTitular bnchf23ExpIngresoTitular = new Bnchf23ExpIngresoTitular();
		bnchf23ExpIngresoTitular.setF23IdExpediente(idExpediente);
		
		List l=  expIngresosDAO.listaexpingresotitu(bnchf23ExpIngresoTitular);
		bnchf23ExpIngresoTitular = l.size() != 0 ? (Bnchf23ExpIngresoTitular)l.get(0): new Bnchf23ExpIngresoTitular();
		return bnchf23ExpIngresoTitular;
	}
	
	public List listavendedor(String idExpediente,String idInmuble) throws Exception
	{
		Bnchf13Expediente bnchf13Expediente = new Bnchf13Expediente();
		bnchf13Expediente.setF13IdExpediente(idExpediente);
		
		Bnchf35InmuebleId bnchf35InmuebleId = new Bnchf35InmuebleId();
			bnchf35InmuebleId.setF35IdInmueble(new Long(idInmuble));
				Bnchf35Inmueble bnchf35Inmueble = new Bnchf35Inmueble();
				bnchf35Inmueble.setId(bnchf35InmuebleId);
				
		bnchf13Expediente.setBnchf35Inmueble(bnchf35Inmueble);
		
		return expIngresosDAO.listavendedor(bnchf13Expediente);
	}
	public List listaPrestamoExpediente(String idExpediente) throws Exception
	{
		
		
		Bnchf13Expediente bnchf13Expediente = new Bnchf13Expediente();
			bnchf13Expediente.setF13IdExpediente(idExpediente);
		return expIngresosDAO.listaPrestamoExpediente(bnchf13Expediente);
	}
	/**********************ingreso familiar  **************************/
	
	public Bnchf23ExpIngresoFamiliar getexpingresofam(String idExpediente,String idPersona) throws Exception
	{
		
		
		
		
		Bnchf23ExpIngresoTitular vari = new Bnchf23ExpIngresoTitular();
		vari.setF23IdExpediente(idExpediente);
		vari.setF23IdPersona(idPersona);
		
		Bnchf23ExpIngresoFamiliar bnchf23ExpIngresoFamiliar;
		List l=  expIngresosDAO.listaexpingresofam(vari);
		bnchf23ExpIngresoFamiliar = l.size() != 0 ? (Bnchf23ExpIngresoFamiliar)l.get(0): new Bnchf23ExpIngresoFamiliar();
		return bnchf23ExpIngresoFamiliar;
	}
	
	
	/**********************ingreso familiar adic **************************/
	
	public Bnchf23ExpIngrFamAdic getexpingrefamadic(Bnchf23ExpIngresoTitular vari) throws Exception
	{
		Bnchf23ExpIngrFamAdic bnchf23ExpIngrFamAdic;
		List l=  expIngresosDAO.listaexpingrefamadic(vari);
		bnchf23ExpIngrFamAdic =l.size() != 0 ?  (Bnchf23ExpIngrFamAdic)l.get(0): new Bnchf23ExpIngrFamAdic();
		return bnchf23ExpIngrFamAdic;
	}
	
	/**********************ingreso familiar cuentas **************************/
	
	public Bnchf23ExpFamCuentas getexpingrefamcuentas(Bnchf23ExpIngresoTitular vari) throws Exception
	{
		Bnchf23ExpFamCuentas bnchf23ExpFamCuentas;
		List l=  expIngresosDAO.listaexpingrefamcuentas(vari);
		bnchf23ExpFamCuentas = l.size() != 0 ? (Bnchf23ExpFamCuentas)l.get(0): new Bnchf23ExpFamCuentas();
		return bnchf23ExpFamCuentas;
	}
	
	
	/**********************ingreso expediente **************************/
	
	public Bnchf13Expediente getexpedientes(String idExpediente) throws Exception
	{
		Bnchf23ExpIngresoTitular vari = new Bnchf23ExpIngresoTitular();
		vari.setF23IdExpediente(idExpediente);
		Bnchf13Expediente bnchf13Expediente;
		List l=  expIngresosDAO.listaexpedientes(vari);
		bnchf13Expediente = l.size() != 0 ? (Bnchf13Expediente)l.get(0): new Bnchf13Expediente();
		return bnchf13Expediente;
	}
	
	/**********************lista  encontrarExpTitCuentas **************************/
	
	public List listarExpTitCuentas(String idExpediente) throws Exception
	{
		
		
		Bnchf23ExpTitCuentasId bnchf23ExpTitCuentasId = new Bnchf23ExpTitCuentasId();
			Bnchf23ExpIngresoTitular bnchf23ExpIngresoTitular = new Bnchf23ExpIngresoTitular();
			bnchf23ExpIngresoTitular.setF23IdExpediente(idExpediente);
				bnchf23ExpTitCuentasId.setBnchf23ExpIngresoTitular(bnchf23ExpIngresoTitular);
		Bnchf23ExpTitCuentas bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
		bnchf23ExpTitCuentas.setId(bnchf23ExpTitCuentasId);
		List l =  expIngresosDAO.encontrarExpTitCuentas(bnchf23ExpTitCuentas);
		return l;
	}
	
	/********************** encontrar vendedor **************************/
	
	public Bnchf36Vendedor EncontrarVendedor(String idVendedor)
	{
		Bnchf36Vendedor  bnchf36Vendedor = new Bnchf36Vendedor();
		bnchf36Vendedor.setF36IdVendedor(new Long(idVendedor));
		try{
			bnchf36Vendedor =  inmuebleDAO.EncontrarVendedor(bnchf36Vendedor);
		}catch(Exception e){}
		
		return bnchf36Vendedor;
	}
	
	/**********************ingreso inmueble **************************/
	
	public Bnchf35Inmueble getinmueble(Bnchf35Inmueble bnchf35Inmueble) throws Exception
	{
		return inmuebleDAO.encontrarInmueble(bnchf35Inmueble);
	}
	
	/**********************ingreso getaprobacioncrediticia **************************/
	
	
	public String getidinmueble(String idExpediente) throws Exception
	{
		Bnchf13Expediente bnchf13Expediente = new Bnchf13Expediente(); 
			bnchf13Expediente.setF13IdExpediente(idExpediente);
		return expIngresosDAO.getidinmueble(bnchf13Expediente);
	}
	
	public List listaUsuarioHistorial(String idExpediente,Long idversion,Long idversionevc) throws Exception
	{
		Bnchf13Expediente bnchf13Expediente = new Bnchf13Expediente(); 
			bnchf13Expediente.setF13IdExpediente(idExpediente);
			bnchf13Expediente.setIdVersion(idversion+"");
			bnchf13Expediente.setIdVersionevc(idversionevc+"");
			
		return expIngresosDAO.listaUsuarioHistorial(bnchf13Expediente);
	}
	
	
	public Bnchf13Expediente datosClienteExpediente(String idExpediente) throws Exception
	{
		Bnchf13Expediente bnchf13Expediente = new Bnchf13Expediente();
		bnchf13Expediente.setF13IdExpediente(idExpediente);
		
		
		return expIngresosDAO.datosClienteExpediente(bnchf13Expediente);
	}
	
	/**********************ingresos inmueble **************************/
	
	public Bnchf35Inmueble getinmuebleIngresos(String idExpediente) throws Exception
	{
		Bnchf35Inmueble bnchf35Inmueble = new Bnchf35Inmueble();
		bnchf35Inmueble.getId().getBnchf13Expediente().setF13IdExpediente(idExpediente);
		
		List l=  expIngresosDAO.listaingresoinmueble(bnchf35Inmueble);
		bnchf35Inmueble = l.size() != 0 ? (Bnchf35Inmueble)l.get(0): new Bnchf35Inmueble();
		return bnchf35Inmueble;
	}
	
	public Double ReportePagoMensualMultiredConyugue(List lcuentas , String idExpediente,int servicio) throws Exception
	{
		
		List l;
		
		Double mtocuota = new Double("0");
		Bnchf23ExpFamCuentas bnchf23ExpTitCuentas = new Bnchf23ExpFamCuentas();
		l = new ArrayList();
		Double vari = new Double("0");
		int serviciov = 0;
		l = listaExpFamCuentas(idExpediente);

		if(l!=null)if(l.size()!=0)
		for(int i=0;i<l.size();i++)
		{
			
			
			bnchf23ExpTitCuentas = (Bnchf23ExpFamCuentas)l.get(i);
			vari = MultiredPagos(lcuentas,bnchf23ExpTitCuentas.getId().getF23NumCta(),serviciov);
			
			if(vari.doubleValue() == new Double(-1).doubleValue())
				serviciov =1;
			else{
			mtocuota = new Double (mtocuota.doubleValue() + vari.doubleValue());
			}
			
		/*	if(servicio ==1)
				return new Double("0");
		*/		
			
		}
		
		  
		
		
		int contador =0;
		for(int i=0;i<lcuentas.size();i++)
		{
			for(int e=0;e<((List)lcuentas.get(i)).size();e++)
			{
			contador++;
			}
		}
		Util util = new Util();
		mtocuota  =  mtocuota;
		
	
		if(serviciov ==1 )
			return new Double(-1);
		else
		return mtocuota;
		
		
	}
	
	
	public Double ReportePagoMensualMultired(List lcuentas , String idExpediente,int servicio) throws Exception
	{
		List l;
		Double mtocuota = new Double("0");
		Bnchf23ExpTitCuentas bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
		l = new ArrayList();
		Double vari = new Double("0");
		int serviciov = 0;
		l = listarExpTitCuentas(idExpediente);
		
		
		
		if(l!=null)if(l.size()!=0)
		for(int i=0;i<l.size();i++)
		{
			bnchf23ExpTitCuentas = (Bnchf23ExpTitCuentas)l.get(i);
			vari = MultiredPagos(lcuentas,bnchf23ExpTitCuentas.getId().getF23NumCta(),serviciov);
			
			
			if(vari.doubleValue() == new Double(-1).doubleValue())
				serviciov =1;
			else{
			mtocuota = new Double (mtocuota.doubleValue() + vari.doubleValue());
			}
			
		/*	if(servicio ==1)
				return new Double("0");
		*/		
			
		}
		int contador =0;
		for(int i=0;i<lcuentas.size();i++)
		{
			for(int e=0;e<((List)lcuentas.get(i)).size();e++)
			{
				List datos = (List)lcuentas.get(i);
				multired multired1 = (multired)datos.get(e);	
			contador++;
			}
		}
		//if(mtocuota.doubleValue() != 0 && contador !=0)
		//mtocuota =  new Double(mtocuota.doubleValue() / contador);
		Util util = new Util();
		mtocuota  = new Double (util.formatearMonto( new BigDecimal( mtocuota+"" )));
		if(serviciov ==1 )
			return new Double(-1);
		else
		return mtocuota;
	}
	
	
	public Double ReportePagoMensualMultiredRegistrarCliente(List lcuentas,String cadenaCuentas,int servicio) throws Exception
	{
		String cadenaAgencias="";    	
    	List l;
		Double mtocuota = new Double("0");
		Bnchf23ExpTitCuentas bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
		l = new ArrayList();
		Double vari = new Double("0");
		int serviciov = 0;
		
    	String[] arrayDatos=cadenaCuentas.split("\\|");
    	for (int i = 0 ; i < arrayDatos.length ; i++) {
    		l.add((String)Util.copyString(arrayDatos[i]+""));
    		
    	}
    	
    	if(l!=null)if(l.size()!=0)
		for(int i=0;i<l.size();i++)
		{
			
			vari = MultiredPagos(lcuentas,(String)l.get(i),serviciov);
			if(vari.doubleValue() == new Double(-1).doubleValue())
				serviciov =1;
			else{
			mtocuota = new Double (mtocuota.doubleValue() + vari.doubleValue());
			}
			
		/*	if(servicio ==1)
				return new Double("0");
		*/		
			
		}
		int contador =0;
		for(int i=0;i<lcuentas.size();i++)
		{
			for(int e=0;e<((List)lcuentas.get(i)).size();e++)
			{
				List datos = (List)lcuentas.get(i);
				multired multired1 = (multired)datos.get(e);	
			contador++;
			}
		}
		Util util = new Util();
		try{
		mtocuota  =  mtocuota;
		}catch(Exception e)
		{
			
			e.printStackTrace();
		}
		if(serviciov ==1 )
			return new Double(-1);
		else
		return mtocuota;
	}
	
	public Double ReportePagoMensualMultiredSimulador(List lcuentas , String idExpediente,List lcuentasbduc,int servicio) throws Exception
	{
		List l;
		
		
		Double mtocuota = new Double("0");
		CuentaForm cuentaForm = new CuentaForm();
		Bnchf23ExpTitCuentas bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
		l = new ArrayList();
		l = lcuentasbduc;
		int serviciov = 0;
		
		Double vari = new Double("0");
		if(l!=null)if(l.size()!=0)
		for(int i=0;i<l.size();i++)
		{
			cuentaForm = (CuentaForm)l.get(i);
			
			vari = MultiredPagos(lcuentas,cuentaForm.getItem().substring(7,cuentaForm.getItem().length()),servicio);
			if(vari.doubleValue()  == new Double(-1).doubleValue())
				serviciov =1;
			else{
			mtocuota = new Double (mtocuota.doubleValue() + vari.doubleValue());
			}
			
			
		}
		servicio = serviciov;
		
		
		
		
		int contador =0;
		for(int i=0;i<lcuentas.size();i++)
		{
			for(int e=0;e<((List)lcuentas.get(i)).size();e++)
			{
			contador++;
			}
		}
		
		
		//if(mtocuota.doubleValue() != 0 && contador !=0)
		//mtocuota =  new Double(mtocuota.doubleValue() / contador);
		Util util = new Util();
		mtocuota  =  mtocuota;
		
		
	
		
		
		
		
		if(serviciov ==1 )
			return new Double(-1);
		else
		return mtocuota;
		
		
	}
	
	
	public Double MultiredPagos(List lcuentas,String Cuenta,int servicio)
	{
		
		
		
		Double mtocuota = new Double("0");
		List lcuentashijo = new ArrayList();
		HeadRespose cab1 = new HeadRespose();
		try{

			ResourceBundle rb = ResourceBundle.getBundle("parametro");
		    String tx = rb.getString("TxSACHMultired");
		    String trm = rb.getString("TxTRAMMultired");
		    
			HeadRequest cab = new HeadRequest(
					tx
					,"WEBSRV"
					,"0000"
					,"000000"
					,trm
					,HeadRequest.TIPO_TRANSACCION_CH);
			
			BodyConsultaMultired body = new BodyConsultaMultired();
			
			BodyConsultaMultired.LDeudaMultired lDeuda = body.new LDeudaMultired();
			lDeuda.add(body.new NivelEndeudamiento()); //1
			lDeuda.add(body.new NivelEndeudamiento()); //2
			lDeuda.add(body.new NivelEndeudamiento()); //3
			lDeuda.add(body.new NivelEndeudamiento()); //4
			lDeuda.add(body.new NivelEndeudamiento()); //5
			lDeuda.add(body.new NivelEndeudamiento()); //6
			lDeuda.add(body.new NivelEndeudamiento()); //7
			lDeuda.add(body.new NivelEndeudamiento()); //8			
			lDeuda.add(body.new NivelEndeudamiento()); //9
			lDeuda.add(body.new NivelEndeudamiento()); //10
			
			body.InputData(Cuenta,lDeuda);
			
			WSConsultaMultiRed consultaTrama = new WSConsultaMultiRed(cab,body);
			BodyConsultaMultired body1 = new BodyConsultaMultired();
			consultaTrama.EjecutarTramaHost(cab1,body1);

			/*Consultando por el Header*/
			
			
			if(cab1.getByTag("COD-RET")!=null)
				if(cab1.getByTag("COD-RET").trim().length()!=0)
					if(Integer.parseInt(cab1.getByTag("COD-RET"))!=0)
					{
						servicio = 1;
						
					}
			if(servicio  == 1)
				
				{
				return new Double(-1);
				}
				
	
			/*Consultando por el Body*/
			
			
			BodyConsultaMultired.LDeudaMultired vv1 =  null;
			vv1 = body1.getLdeudaMultired();
			
			multired multired = new multired();
			
			Util util = new Util();
			
			int contadorpromedio =0;
			for(int i=0;i<10;i++)
			{
			if(((BodyConsultaMultired.DeudaMultired)vv1.get(i)).getByTag("IDE-PREST") != null)
			 if(((BodyConsultaMultired.DeudaMultired)vv1.get(i)).getByTag("IDE-PREST").trim().length()!=0)
			 {
			 	contadorpromedio++;
			 	
			 	
			 	multired = new multired();
			 	multired.setIdeprest( ((BodyConsultaMultired.DeudaMultired)vv1.get(i)).getByTag("IDE-PREST") );
			 	multired.setTipprest( ((BodyConsultaMultired.DeudaMultired)vv1.get(i)).getByTag("TIP-PREST") );
			 	multired.setMtocuota(util.formatearMonto( new BigDecimal( ((BodyConsultaMultired.DeudaMultired)vv1.get(i)).getByTag("MTO-CUOTA")) )  );
			 	multired.setSdoprest(util.formatearMonto( new BigDecimal( ((BodyConsultaMultired.DeudaMultired)vv1.get(i)).getByTag("SDO-PREST")) ) );
			 	multired.setCuototal( ( Integer.parseInt( ((BodyConsultaMultired.DeudaMultired)vv1.get(i)).getByTag("CUO-TOTAL") +""))+"");
			 	multired.setCuocance( ( Integer.parseInt( ((BodyConsultaMultired.DeudaMultired)vv1.get(i)).getByTag("CUO-CANCE") +""))+"");
			 	multired.setEstprest( ((BodyConsultaMultired.DeudaMultired)vv1.get(i)).getByTag("EST-PREST") );
			 	multired.setNrocuenta(Cuenta);
			 	mtocuota = new Double(mtocuota.doubleValue() + (new Double(  multired.getMtocuota() )).doubleValue());
			 	
			 	lcuentashijo.add(multired);
			 	
			 	
			 	
			 	
			 }
			 
			 	
			}
			
			

	
			
			if(lcuentashijo.size()!=0)
			lcuentas.add(lcuentashijo);
			
			
			
		} catch(Exception e){
			log.error(e.getMessage());
		}
		
		return mtocuota;
	}
	
	public List ReportePagoMensualMultiredSimulador(List l ) throws Exception
	{
		
		/*
		String cuentas[] = new String[5];
		Bnchf23ExpTitCuentas bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
		cuentas[0]="00000000000";
		cuentas[1]="00000000000";
		cuentas[2]="00000000000";
		cuentas[3]="00000000000";
		cuentas[4]="00000000000";
		
		 CuentaForm cuentaForm=new CuentaForm();    
		if(l!=null)if(l.size()!=0)
		for(int i=0;i<l.size();i++)
		{
			if(i<5)
			{
			cuentaForm=new CuentaForm();    	
    		cuentaForm=(CuentaForm)l.get(i);
			cuentas[i]=cuentaForm.getNrocuenta();
			}
		}
		for(int i=0;i<5;i++)
		{
			
		}
		
		HeadRespose cab1 = new HeadRespose();
		try{
			ResourceBundle rb = ResourceBundle.getBundle("parametro");
		    String tx = rb.getString("TxSACHMultired");
		    String trm = rb.getString("TxTRAMMultired");
		    
			HeadRequest cab = new HeadRequest(
					tx
					,"USR001"
					,"0046"
					,"000001"
					,trm
					,HeadRequest.TIPO_TRANSACCION_CH);
			
			BodyConsultaMultired body = new BodyConsultaMultired();
			body.InputData(cuentas[0]);
			
			
			WSConsultaMultiRed consultaTrama = new WSConsultaMultiRed(cab,body);
			consultaTrama.EjecutarTramaHost(cab1,body);
			
			
			String  codret="0";
			codret=cab1.getByTag("COD-RET");
			
			
			l=new ArrayList();
			
			if(Integer.parseInt(codret)==0)
			{
				
				cuentas[0] = body.getByTag("CTA-01");
				cuentas[1] = body.getByTag("CTA-02");
				cuentas[2] = body.getByTag("CTA-03");
				cuentas[3] = body.getByTag("CTA-04");
				cuentas[4] = body.getByTag("CTA-05");
			
				for(int i=0;i<5;i++)
				{
					
				}
				
				
				double total =0;
				
				if(!cuentas[0].equals("00000000000"))
				{
					bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
					bnchf23ExpTitCuentas.getId().setF23NumCta(cuentas[0]);
					if(body.getByTag("ESTADO-CTA01").equals("01"))
						bnchf23ExpTitCuentas.setStadocuenta("Cuenta no Figura en Multired");
					else
						bnchf23ExpTitCuentas.setStadocuenta("Tiene deuda en Multired");
				
					bnchf23ExpTitCuentas.setF23MntoPromCta(new Double(body.getByTag("SALDO-DEUDA02")));	
					total = total +bnchf23ExpTitCuentas.getF23MntoPromCta().doubleValue(); 
					l.add(bnchf23ExpTitCuentas);
				}
				if(!cuentas[1].equals("00000000000"))
				{
					
					bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
					bnchf23ExpTitCuentas.getId().setF23NumCta(cuentas[1]);
						if(body.getByTag("ESTADO-CTA02").equals("01"))
							bnchf23ExpTitCuentas.setStadocuenta("Cuenta no Figura en Multired");
						else
							bnchf23ExpTitCuentas.setStadocuenta("Tiene deuda en Multired");
					bnchf23ExpTitCuentas.setF23MntoPromCta(new Double(body.getByTag("SALDO-DEUDA02")));
					total = total +bnchf23ExpTitCuentas.getF23MntoPromCta().doubleValue(); 
					l.add(bnchf23ExpTitCuentas);
					
				}
				if(!cuentas[2].equals("00000000000"))
				{
					
					bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
					bnchf23ExpTitCuentas.getId().setF23NumCta(cuentas[2]);
						if(body.getByTag("ESTADO-CTA03").equals("01"))
							bnchf23ExpTitCuentas.setStadocuenta("Cuenta no Figura en Multired");
						else
							bnchf23ExpTitCuentas.setStadocuenta("Tiene deuda en Multired");
					bnchf23ExpTitCuentas.setF23MntoPromCta(new Double(body.getByTag("SALDO-DEUDA03")));
					total = total +bnchf23ExpTitCuentas.getF23MntoPromCta().doubleValue(); 
					l.add(bnchf23ExpTitCuentas);
				}
				if(!cuentas[3].equals("00000000000"))
				{
					
					bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
					bnchf23ExpTitCuentas.getId().setF23NumCta(cuentas[3]);
					if(body.getByTag("ESTADO-CTA04").equals("01"))
						bnchf23ExpTitCuentas.setStadocuenta("Cuenta no Figura en Multired");
					else
						bnchf23ExpTitCuentas.setStadocuenta("Tiene deuda en Multired");
					bnchf23ExpTitCuentas.setF23MntoPromCta(new Double(body.getByTag("SALDO-DEUDA04")));
					total = total +bnchf23ExpTitCuentas.getF23MntoPromCta().doubleValue(); 
					l.add(bnchf23ExpTitCuentas);
				}
				if(!cuentas[4].equals("00000000000"))
				{
					
					bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
					bnchf23ExpTitCuentas.getId().setF23NumCta(cuentas[4]);
					if(body.getByTag("ESTADO-CTA05").equals("01"))
						bnchf23ExpTitCuentas.setStadocuenta("Cuenta no Figura en Multired");
					else
						bnchf23ExpTitCuentas.setStadocuenta("Tiene deuda en Multired");
					bnchf23ExpTitCuentas.setF23MntoPromCta(new Double(body.getByTag("SALDO-DEUDA05")));
					total = total +bnchf23ExpTitCuentas.getF23MntoPromCta().doubleValue(); 
					l.add(bnchf23ExpTitCuentas);
				}
				
				bnchf23ExpTitCuentas = new Bnchf23ExpTitCuentas();
				bnchf23ExpTitCuentas.getId().setF23NumCta("Total");
			
				bnchf23ExpTitCuentas.setF23MntoPromCta(new Double(total));
				l.add(bnchf23ExpTitCuentas);
				
				
				
			}
			
			
			
			
		} catch(Exception e){
			
		}*/
		
		return new ArrayList();
		
	}
	
	 
	
	/**
	 * @param pagoservicioDAO El pagoservicioDAO a establecer.
	 */
	public void setPagoservicioDAO(PagoServicioDAO pagoservicioDAO) {
		this.pagoservicioDAO = pagoservicioDAO;
	}
}
